mitmproxy 官方文件的 Setting highscores on Apple’s GameCenter 章節有提到如何利用中間人攻擊竄改封包,騙過伺服器端的分數計算。
事實上,只要是在客戶端計算完畢的數字,在回傳給伺服器之前,都可以被加以修改。
前提是修改過的數字,伺服器端無法加以驗證。
在這種攻擊思維底下,客戶端甚至不用劫持連線,也有機會直接使用記憶體修改或存檔修改的方式來達成作弊。
尤其是手機的 APP,如果我們劫持連線以後,能回傳客戶端「能解讀」的回應格式,客戶端通常是不會加以驗證的。
此時我們可以把客戶端程式想成一個容器,裡面要放什麼東西,原本該是伺服器端決定。
但因為劫持連線以後,容器內要放的東西決定權就在我們了。
按照攻擊思維二,如果我劫持了連線,我可以做到影片中的事情。
麥當勞報報的使用方式是要在店員面前按下兌換,兌換後會開始倒數計時,之後優惠就會消失。
而優惠列表的取得是一個 API,但是按下兌換的時候是沒有連網路的,只是一個 timer 在倒數。
可想而知,這樣的作弊方法是行得通的。
再次聲明,以上純屬技術性討論,我沒有真的這樣走到櫃台兌換優惠過。